package br.pacote.negocio;

//import br.pacote.persistencia.AlunoDAO;
//import br.pacote.persistencia.ConexaoDAO;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import javax.swing.JScrollPane;
import javax.swing.JOptionPane;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import javax.swing.JFrame;


public class PesquisarAluno extends JInternalFrame implements ActionListener
{
   private JLabel lbTitulo01;   
   private JLabel lbTitulo02;         
   private JLabel lbNome;         
   private JTextField txtNome;         
   private JButton btnPesquisar;
   private JButton btnPesquisarTodos;
   private JButton btnEditar;
   private JButton btnExcluir;     
   private JScrollPane panelSQL;   
   private JTable lista;   
   private DefaultTableModel defaultDataModel = new DefaultTableModel();
   private DefaultTableModel defaultDataModel2 = new DefaultTableModel();
   private Vector nomeColunas = new Vector();
   private Vector dados = new Vector();   
   
   

   public void reinicializaDados()
   {
      Vector r = new Vector();
      r.add("Nenhum registro para exibir");

      nomeColunas.removeAllElements();
      dados.removeAllElements();
      nomeColunas.add("Sem dados");
      dados.add(r);
      defaultDataModel.setDataVector(dados,nomeColunas);
      defaultDataModel2.setDataVector(dados,nomeColunas);
   }

   public PesquisarAluno() throws ParseException
   {
      super("Pesquisar Aluno");

      lbTitulo01 = new JLabel("SIGA - Sistema de Gestão Acadêmica");
      lbTitulo02 = new JLabel("Pesquisar Aluno");
      lbNome = new JLabel("Nome do aluno:");
      
      
      txtNome = new JTextField();
                 
      
      btnPesquisar = new JButton ("Pesquisar");
      btnPesquisarTodos = new JButton ("Todos os alunos");
      btnEditar = new JButton ("Editar");
      btnExcluir = new JButton ("Excluir");
      
      
      lista = new JTable(defaultDataModel);
      panelSQL = new JScrollPane(lista);      


      setLayout(null);

      lbTitulo01.setBounds(280,-50,250,120);   
      lbTitulo02.setBounds(340,-30,150,120);   
      lbNome.setBounds(20,70,200,20);  
      
      
      txtNome.setBounds(110,70,400,20);   
       
      
      
      btnPesquisar.setBounds(512,70,100,20);
      btnPesquisarTodos.setBounds(615,70,151,20);
      btnEditar.setBounds(20,460,100,20);
      btnExcluir.setBounds(150,460,100,20);
      
            
      panelSQL.setBounds(20,100,750,350);      

      getContentPane().add(lbTitulo01);
      getContentPane().add(lbTitulo02);
      getContentPane().add(lbNome);
      
      
      getContentPane().add(txtNome);
      
      
      getContentPane().add(btnPesquisar);
      getContentPane().add(btnPesquisarTodos);
      getContentPane().add(btnEditar);
      getContentPane().add(btnExcluir);

      getContentPane().add(panelSQL);       
            
      btnPesquisar.addActionListener(this);
      btnPesquisarTodos.addActionListener(this);
      btnEditar.addActionListener(this);
      btnExcluir.addActionListener(this);

      reinicializaDados();

      setBounds(0,0,800,600);
      setVisible(true);
      setClosable(true);
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
      
   }
   

   public void actionPerformed(ActionEvent e)
   {
       if(e.getSource()==btnPesquisar||e.getSource()==btnPesquisarTodos)
       {
         String delimitador = "";
         if(e.getSource()==btnPesquisar)
         {
             delimitador = "where";
         }else
          {
             if(e.getSource()==btnPesquisarTodos)
             {
                 delimitador = "like";
             }
          }
                 
         String url="jdbc:mysql://localhost/siga";
         String driver="com.mysql.jdbc.Driver";
         String usuario= "root";
         String senha="root";

         Connection conexao = null;
         Statement sentenca = null;
         ResultSet resultSet= null;
         ResultSetMetaData resultSetMetaData = null;         
           try
           {      
               Class.forName(driver);

               conexao = DriverManager.getConnection(url,usuario,senha);
               sentenca = (Statement) conexao.createStatement();               
               resultSet = sentenca.executeQuery("Select"
                       + " matricula,nome,cpf,rg,nascimento,"
                       + " endereco,telefone,email"
                       + " from pessoa p"
                       + " inner join aluno a"
                       + " on"
                       + " a.Pessoa_idPessoa=p.matricula and p.matricula=a.Pessoa_idPessoa"
                       + " "+delimitador+" nome='"+txtNome.getText()+"'");        
               resultSetMetaData = resultSet.getMetaData();
               nomeColunas.removeAllElements();      
               
               for(int i=0; i< resultSetMetaData.getColumnCount();i++)
               {
                   nomeColunas.add(i, resultSetMetaData.getColumnName(i+1));
               }

               Vector registro = null;

               dados.removeAllElements();

               while(resultSet.next())
               {
                   registro = new Vector();

                   for(int i=1; i<=resultSetMetaData.getColumnCount();i++)
                   {
                       registro.add(resultSet.getString(i));
                   }

                   dados.add(registro);
               }
               defaultDataModel.setDataVector(dados,nomeColunas);              
               
           }catch(ClassNotFoundException ex)
            {
                JOptionPane.showMessageDialog(this,"Driver não localizado: "+ ex.getMessage());
                reinicializaDados();
                
            }catch(SQLException ex)
            {
                JOptionPane.showMessageDialog(this,"Erro de SQL:"+ ex.getMessage());
                reinicializaDados();                
            }finally
            {
                try
                {
                    sentenca.close();
                    resultSet.close();
                    conexao.close();
                }catch(SQLException ex)
                 {
                     JOptionPane.showMessageDialog(this, "Erro de SQL: " +ex.getMessage());
                     reinicializaDados();
                 }
            }
           
       }
       
       if(e.getSource()==btnExcluir)
       {
           
         String matricula="";
         
         matricula = JOptionPane.showInputDialog("Informe a matrícula do aluno:");
         
         if(matricula!=null)
         {
         
         JFrame frame = new JFrame();
         Object[] options = {"Confirmar","Sair"};
         Integer confirmacao = JOptionPane.showOptionDialog(frame,"Deseja realmente excluir esse aluno do Sistema?","Confirmação",
                 JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,
                 null,
                 options,
                 options[1]);
         
         
         if(confirmacao==1)
         {
             
         }else
          {             
                   
         String url="jdbc:mysql://localhost/siga";
         String driver="com.mysql.jdbc.Driver";
         String usuario= "root";
         String senha="root";

         Connection conexao = null;
         Statement sentenca = null;
         Statement sentenca2 = null;
         Statement sentenca3 = null;
                 
           try
           {                  
               
               Class.forName(driver);

               conexao = DriverManager.getConnection(url,usuario,senha);
               sentenca = conexao.createStatement();
               sentenca2 = conexao.createStatement();          
               sentenca3 = conexao.createStatement();          
               
               sentenca.execute("delete"
                       + " from historico_escolar"
                       + " where"
                       + " Aluno_idAluno="+matricula+";");
               
               sentenca.execute("delete"
                       + " from aluno"
                       + " where idaluno="+matricula+";");
               
               
                                   
               sentenca2.execute("delete"
                       + " from pessoa"
                       + " where matricula="+matricula+";"); 
                                      
               
           }catch(ClassNotFoundException ex)
            {
                JOptionPane.showMessageDialog(this,"Driver não localizado: "+ ex.getMessage());
                reinicializaDados();
                
            }catch(SQLException ex)
            {
                JOptionPane.showMessageDialog(this,"Erro de SQL:"+ ex.getMessage());
                reinicializaDados();                
            }finally
            {
                try
                {
                    sentenca.close();                    
                    conexao.close();
                }catch(SQLException ex)
                 {
                     JOptionPane.showMessageDialog(this, "Erro de SQL: " +ex.getMessage());
                     reinicializaDados();
                 }
            }
          } 
          }
       }
       
       if(e.getSource()==btnEditar)
       {
         String matricula = "";
         matricula = JOptionPane.showInputDialog("Informe a matrícula do aluno:");
         
         if(matricula!=null)
         {
         
            String opcao ="";          
            opcao = String.valueOf(JOptionPane.showInputDialog(null, "Qual campo deseja editar:", "Editar Cadastro",
            JOptionPane.QUESTION_MESSAGE, null, new Object[] { "Todos","Nome",
                "CPF","RG","Nascimento","Endereco","Telefone","Email"},""));
        
            if(opcao!=null)
            {         
                 
                 if(opcao.equals("Todos"))
                 {                     
                     String nome = JOptionPane.showInputDialog("Nome:");
                     String cpf = JOptionPane.showInputDialog("CPF:");
                     String rg = JOptionPane.showInputDialog("RG:");
                     String nascimento = JOptionPane.showInputDialog("Nascimento(Formato: ano-mês-dia (ex:1986-12-29)");
                     String endereco = JOptionPane.showInputDialog("Endereco:");
                     String telefone = JOptionPane.showInputDialog("Telefone:");
                     String email = JOptionPane.showInputDialog("Email:");
                     
                           
                 
                 String url="jdbc:mysql://localhost/siga";
                 String driver="com.mysql.jdbc.Driver";
                 String usuario= "root";
                 String senha="root";

                 Connection conexao = null;
                 Statement sentenca = null;                 

           
               try
               {                      

                   Class.forName(driver);

                   conexao = DriverManager.getConnection(url,usuario,senha);
                   sentenca = conexao.createStatement();

                   sentenca.execute("UPDATE `siga`.`pessoa` SET "
                           + " `nome`='"+nome+"', `CPF`="+cpf+","
                           + " `RG`="+rg+", `nascimento`='"+nascimento+"', `endereco`='"+endereco+"',"
                           + " `telefone`="+telefone+", `email`='"+email+"' "
                           + " WHERE `matricula`='"+matricula+"';");
                   
                   JOptionPane.showMessageDialog(null,"Cadastro editado com sucesso!");

               }catch(ClassNotFoundException ex)
                {
                    JOptionPane.showMessageDialog(this,"Driver não localizado: "+ ex.getMessage());
                    reinicializaDados();

                }catch(SQLException ex)
                {
                    JOptionPane.showMessageDialog(this,"Erro de SQL:"+ ex.getMessage());
                    reinicializaDados();                
                }finally
                {
                    try
                    {
                        sentenca.close();                    
                        conexao.close();
                    }catch(SQLException ex)
                     {
                         JOptionPane.showMessageDialog(this, "Erro de SQL: " +ex.getMessage());
                     }
                }
            }//Fim do if(opcao.equals("Todos"))
          }//Fim do if opcao!=null
       }//Fim do if matricula!=null
      
      }
       
   }   
}
